/**
 * 节点容器, 提供一个base类指针的动态数组
 * 各个元素作为一个副本指针的方式处理, 容器并不关心指针的操作, 所有添加获取都不用const修饰. 
 * 删除元素仅将指针从容器中移除, 并不会delete指针, 析构容器也不会对各元素进行析构.
 * 
 * 开发者   : Marco
 * 创建时间 : 2016年12月15日, 下午2:45
 */

#ifndef __MARCOPP_NODE_ARRAY_H__
#define __MARCOPP_NODE_ARRAY_H__

namespace marco {
namespace node {

class base;
class array_impl;

class array {
    
public:
    explicit array(void);
    ~array(void);

private:
    array(const array& orig); // 禁用拷贝构造
    array& operator=(const array& orig); // 禁用拷贝赋值运算符重载

#if (__cplusplus >= 201103L)
    array(array&& orig) = delete; // 禁用移动构造
    array& operator=(array&& orig) = delete; // 禁用移动赋值运算符重载
#endif
    
    array_impl* impl;
};

} // namespace node
} // namespace marco
#endif /* __MARCOPP_NODE_ARRAY_H__ */

